﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Windows.Forms;
using EntitiesAndMappings.Entities;
using ProyectoActivos.Daos;
using ProyectoActivos.Validate;

namespace ProyectoActivos.Forms.Consultas
{
    public partial class FrmConsultaMantenimientoArticulos : Form,IValidateForm
    {
        public static FrmConsultaMantenimientoArticulos Activo;

        private AppSettingsReader reader;
        
        private bool _valido;

        public FrmConsultaMantenimientoArticulos()
        {
            InitializeComponent();
            Activo = this;
            reader = new AppSettingsReader();
            dgridResultado.AutoGenerateColumns = false;
            _valido = true;
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            datFechaFin.Enabled = !datFechaFin.Enabled;
            datFechaInicio.Enabled = !datFechaInicio.Enabled;
        }

        private void btnConsultar_Click(object sender, EventArgs e)
        {
            
            IList<ConsultaMantenimientoDTO> listado;
            _valido = true;
            if (checkBox1.Checked)
            {
                if (datFechaInicio.Value.Date>datFechaFin.Value.Date)
                {
                    errorProvider.SetError(datFechaInicio,"La fecha de inicio debe ser menor que la fecha de fin");
                    Invalid();
                }
            }
            ActionExecutor.Execute(this, delegate
            {
                var articulo = cmbArticulo.SelectedItem as Articulo;
                var fechaInicio = DateTime.MinValue;
                var fechaFin = DateTime.MaxValue;
                if (checkBox1.Checked)
                {
                    fechaInicio = datFechaInicio.Value.Date;
                    fechaFin = datFechaFin.Value.Date;
                }
                listado = new ConsultasDAO().ObtenerConsultaMantenimiento(articulo, fechaInicio, fechaFin);
                dgridResultado.DataSource = listado;
                if (articulo != null)
                {
                    txtMarca.Text = articulo.Marca.Descripcion;
                    txtFrecuenciaMantenimiento.Text = articulo.FrecuenciaMantenimiento.ToString();
                    txtModelo.Text = articulo.Modelo;
                    txtObservaciones.Text = articulo.Observaciones;
                    txtSerie.Text = articulo.Serie;
                    txtStockMinimo.Text = articulo.StockMinimo.ToString();
                    txtTipoMantenimiento.Text = articulo.TipoMantenimiento.Descripcion;
                    txtUnidadMedida.Text = articulo.UnidadMedida.Descripcion;
                    picArticulo.ImageLocation = reader.GetValue("RaizRutaImagenes",typeof(string))+@"\\"+articulo.RutaArchivoImagen;
                }
            });
        }

        private void FrmConsultaMantenimientoArticulos_Load(object sender, EventArgs e)
        {
            ActionExecutor.Execute(this, delegate
            {
                var listadoArticulo = new ArticuloDAO().ObtenerActivos();
                cmbArticulo.DataSource = listadoArticulo;
            });
        }

        public void Invalid()
        {
            _valido = false;
        }

        public bool IsValid()
        {
            return _valido;
        }

        private void FrmConsultaMantenimientoArticulos_FormClosing(object sender, FormClosingEventArgs e)
        {
            Activo = null;
        }
    }
}
